'use strict';

const OSS = require('ali-oss');
const accessTokenService = require('../service/accessTokenService');

module.exports = {
    getToken: async ctx => {
        // 通过STS服务生成临时访问凭证。临时访问凭证包括临时访问密钥（AccessKeyId和AccessKeySecret）和安全令牌（SecurityToken）。
        let sts = new OSS.STS({
            accessKeyId: 'LTAI5tNxouTj8bWwc1YYZToL',
            accessKeySecret: 'ZWNO03ahQVFAOgucrYleBkpeZcfVoF'
        });
        // roleArn填写角色ARN。
        // policy填写自定义权限策略。
        // expiration用于设置临时访问凭证有效时间单位为，最小值为900，最大值以当前角色设定的最大会话时间为准。
        // sessionName用于自定义角色会话名称，用来区分不同的令牌，例如填写为SessionTest。
        await sts.assumeRole('acs:ram::1562739604599781:role/assumengiconossuploader', '', '1800', 'sessionIconfont').then((result) => {
            console.log('result',result);
            ctx.body = {
                AccessKeyId: result.credentials.AccessKeyId,
                AccessKeySecret: result.credentials.AccessKeySecret,
                SecurityToken: result.credentials.SecurityToken,
                Expiration: result.credentials.Expiration,
                region: 'oss-cn-hangzhou',
                bucket: "maycur-static-prod"
            };
        }).catch((err) => {
            console.log('result',err);
        });
    },
    oAuthConnnection: async (ctx) => {
        const query = ctx.request.query;
        ctx.state.isHtml = true;
        await accessTokenService.oauth(query.code, '123456');
        ctx.body = '<h1>授权成功</h1>';
    }
}